/* 
    ts 函数类型
*/
// 单独指定函数类型、参数类型
function add(num1: number, num2: number): number {
    return num1 + num2;
}

const add2 = (num1: number, num2: number): number => {
    return num1 + num2;
}
console.log("add:", add(1, 2));
console.log("add2:", add2(5, 2));

// 同时指定函数类型、参数类型
const add3: (num1: number, num2: number) => number = (num1, num2) => {
    return num1 + num2;
}

console.log("add3:", add3(5, 9));

// 如果函数没有返回值，则函数类型为 void
function greet(name: string): void {
    console.log("hello " + name);
}

greet("shuangshuang");


// 可选参数：在参数名称后面加 ?
// 可选参数必须放在参数列表的最后，后面不能再有必选参数
function slice(start?: number, end?: number): void {
    console.log("start:", start, " ,end: ", end);
}

slice();
slice(1,2);
slice(3);